/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package argtrust.argtrustgraph;

import argtrust.argsys.Argument;
import argtrust.argsys.Defeat;
import argtrust.belief.Belief;
import argtrust.logic.FactInferenceNode;
import argtrust.logic.RuleInferenceNode;
import argtrust.out.graphviz.GVZGraph;
import argtrust.trustnet.TrustLink;
import argtrust.trustnet.Agent;

/**
 *
 * @author Yuqing Tang
 */
public interface IGraphAttributeFactory {

    public String getName();

    public IGraphAttribute getAttribute();

    public IGraphAttribute getAgentAttribute(Agent agent);

    public IGraphAttribute getDefeatAttributes(Defeat defeat);

    public IGraphAttribute getDirectBeliefAttributes(Argument arg, Belief belief);

    public IGraphAttribute getFinalConclusionProperties(Argument arg, FactInferenceNode conclusion);

    public IGraphAttribute getFinalConclusionProperties(Argument arg, RuleInferenceNode conclusion);

    public abstract IGraphAttribute getIndirectTrustAttributes(Argument arg, argtrust.trustnet.IndirectTrust trust_measure);

    public IGraphAttribute getInferenceRuleAttributes(Argument arg, RuleInferenceNode rule);

    public IGraphAttribute getIntermediaConclusionProperties(Argument arg, RuleInferenceNode conclusion);

    public IGraphAttribute getPremiseProperties(Argument arg, FactInferenceNode premise);

    public IGraphAttribute getTrustLinkAttributes(TrustLink trust_link);

    public void setArgumentStyle(IArgTrustDrawing drawing, Argument arg);

    public void setGraphStyle(IArgTrustDrawing drawing);

    public void setTrustnetStyle(IArgTrustDrawing drawing);
}
